package com.pphh.demo;

import com.pphh.demo.exception.BlockException;

/**
 * Please add description here.
 *
 * @author huangyinhuang
 * @date 11/14/2018
 */
public abstract class FlowControl {

    /**
     * 流量控制的并发运行入口，该入口方法run()将会被测试框架多线程并发执行，实现对入口的大流量调用冲击。
     * 继承的类必须实现该run()接口，并实现流量控制，实现对测试方法test()的调用频率控制，所有对test()的阻塞需要通过抛出BlockException来告知测试框架。
     * <p>
     * 目标：调用测试任务test()，实现每秒50次的调用频率控制
     *
     * @throws Exception
     */
    public abstract void run() throws BlockException;

    /**
     * 测试任务
     */
    public void test() {
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            System.out.println("An unexpected interrupt operation is happened.");
        }
    }

}
